Infinity-Get-Room-Vars names a function, with lambda list (D U RECIPIENT/S):
Returns “room variables.”
Lisp GET-ROOM-VARS = JSON getRoomVars
This command requires no parameters.
In Romance I, the server had a library of free-form key-value pairs which were used to control each “room,” or screen, of the game.
These variables, which were usually edited using the special “Zookeeper” client by Eric Feilding, eventually metamorphosed into a library of very specific “room variables” as described herein.
We no longer support arbitrary key-value pairs; at this point, all room variables are specifically enumerated in the following documentation; however, future releases could expand this list, so conforming clients are required to accept and ignore unrecognized variables silently.
These room variables define the general environment.
The Sky. Consists of the background (sky) texture file as a URL, or, the position of a sky object such as the sun, a moon, or a cloud.
The Floor; no longer used in 2.0. (This was the actual SWF file that had the room background in it, in Romance I.)
The Weather, or overlay artwork. Used to indicate precipitation.
WRITEME
WRITEME
A placed item can be represented by an encoded string form (“item”), or a JSON structure (“itm2”).
The older style uses a key beginning with item and an unique identifier string, followed by a ~ delimited list of: description, X position, Y position, facing, and (optional) Z position.
If the Z position is omitted, then the value given for Y position should be used for Z instead. (The Y axis used to run across the floor.)
The facing value can be given in radians, or as a special moniker from the set: N NE E SE S SW W NW
itemfoo123: "flowerPot~100~931~N" itembar456: "flowerPot~100~0~1.23412952423~931"
Placed items, new form: JSON object
{ uuid: position: { x: y: z: }, facing: radians, baseColor: color, altColor: color, energy: number, scale: { x: y: z: }, world: { world: lat: long: alt: }, template: { id: name: description: trade: [ Y N X ], avatar: energyKind: energyMax: onZero: wearSlot: weight: } }
User-positioned items: key: “furn” --- no longer used.
Text items: key: "text" + unique-ID = value
Text to be displayed atop another item. The value might be x~z~string or itm2-id~attachment~string. In the latter form, the text is attached to the model of the “itm2” given at the attachment point.
Places are regions of the game space defined by polygonal outlines. These are held in Room Variables with names of the form "zone" plus an arbitrary identifier. The contents of the room variable are a key followed by ":" and a series of coördinates.
Each coördinate pair/triplet is given as x,y,z in decimal, literally, like: "100,0,200". When only two coördinates are supplied, they represent x and z. They are separated with "~". To stop one polygon and start on another, give "~~" with no coördinates between.
The key of a Place specifies its purpose. The keys understood by the server include:
This is the default Place kind; any area of ground that is not explicitly part of some other kind of Place is grass.
This demarcates an invisible obstacle --- a collision-only object --- which prevents avatars from entering that space.
This space is part of an in-world game; e.g. a soccer field.
The stuff the moons are made of. (Fight me.)
A bottomless pit
WRITEME --- there is more to explain about room variables.
See TOOTSVILLE-USER PLACE for an explanation of creating certain places in the game and how they work.
Defined in file src/infinity/new-commands-20.lisp.